home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 5383 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  1.3 KB

  1. Path: worf.qntm.com!root
  2. From: pb@netcom.com
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Best way to make a circle
  5. Date: 12 Feb 1996 20:09:33 GMT
  6. Organization: Quantum Corp. Milpitas CA USA
  7. Message-ID: <4fo6pt$39o@worf.qntm.com>
  8. References: <1996Feb8.043040.19301@lafn.org>
  9. Reply-To: pb@netcom.com
  10. NNTP-Posting-Host: pbutler.qntm.com
  11. X-Newsreader: IBM NewsReader/2 v1.02
  12.  
  13. In <1996Feb8.043040.19301@lafn.org>, an234@lafn.org (Andres Lessing) writes:
  14. >
  15. >I am working on 3d Graphics quite succesfully as of now and am trying to 
  16. >put together a good Graphics library that is much faster than BGI drivers.
  17. >I know that Sin and Cosine take to much time to calculate... so... which 
  18. >way should I do it?
  19. >
  20. First a little math...
  21. Circle: x = sin(t)
  22.         y = cos(t)  step t from 0..2pi
  23.  
  24. difer:  dx = +cos(t)/dt
  25.         dy = -sin(t)/dt
  26.  
  27. subst:  dx = +y/dt
  28.         dy = -x/dt
  29.  
  30. let dt=1/64 and we have in c
  31.  
  32.         x += y/64;
  33.         y -= x/64; /* rad/64 or about 400 steps around */
  34.  
  35. if we let m = 2pi/steps we get...
  36.  
  37.         x += m*y;
  38.         y -= m*x;  /* 'tiz better to use the new x in this step */
  39.  
  40. Using the above you step sin/cos using simple math.  Properly scaled 16 bit values
  41. aint bad.  Test in spread sheet if you wish.  Dont forget to reset to (x=0, y=1)
  42. after one trip around or you get a growing circle.
  43.  
  44. -pb
  45.  
  46.